L'équipe de soutien académique a besoin d'une liste des inscriptions actives dont les performances récentes ont baissé. Comparez chaque étudiant à ses propres performances antérieures dans le même cours.
S'accorder sur les règles
- Utilisez deux périodes :
antérieureetrécente. Chacune comporte deux évaluations pondérées de manière égale. - Exigez au moins deux scores non NULL dans chaque période avant de comparer les moyennes.
- Calculez
decline_points = earlier_avg - recent_avg. - Une baisse d'au moins 15 points signifie Review. Sinon, une inscription éligible a No alert.
- Gardez Insufficient data séparé. Un zéro est un score valide ; un NULL ou un enregistrement manquant n'est pas un zéro.
Préparez votre base de données
Ouvrez le fichier fourni lab8_setup.sql depuis le dossier du chargé de TD DSAI2202/lab8/ dans pgAdmin et exécutez le fichier complet. Réutilisez le paramètre de connexion à droite chaque fois que vous ouvrez une nouvelle connexion.
La configuration fournit également performance_comparison, une requête enregistrée appelée vue. Elle servira aux exercices ultérieurs ; ce n'est pas une table supplémentaire de résultats d'évaluation stockés.
SET search_path TO lab8;SET search_path TO lab8;
SELECT 'students' AS table_name, COUNT(*) AS row_count
FROM students
UNION ALL SELECT 'courses', COUNT(*) FROM courses
UNION ALL SELECT 'enrolments', COUNT(*) FROM enrolments
UNION ALL SELECT 'assessment_results', COUNT(*) FROM assessment_results
UNION ALL SELECT 'support_units', COUNT(*) FROM support_units
ORDER BY table_name;SET search_path TO lab8;
SELECT e.enrolment_id, e.student_id, e.course_code,
r.result_id, r.period, r.assessment_no, r.score
FROM enrolments AS e
JOIN assessment_results AS r
ON r.enrolment_id = e.enrolment_id
WHERE e.enrolment_id IN ('E01', 'E07', 'E08', 'E09', 'E24')
ORDER BY e.enrolment_id, r.period, r.assessment_no;Vérifier les comptes de la configuration
| Table | Lignes | Une ligne représente |
|---|---|---|
| students | 18 | Le profil d'un étudiant |
| courses | 4 | Un cours |
| enrolments | 24 | L'inscription d'un étudiant à un cours |
| assessment_results | 92 | Un résultat d'évaluation pour une inscription et une période |
| support_units | 7 | Une unité de soutien dans l'exercice facultatif sur la hiérarchie |
Il y a 22 inscriptions actives et 2 retirées. L'enquête finale nécessite une ligne par inscription active, et non une ligne par évaluation ou une ligne par étudiant tous cours confondus.
Cinq cas à analyser
| Inscription | Cours | Scores antérieurs | Scores récents | Preuves suffisantes ? |
|---|---|---|---|---|
| E01 | SQL101 | 80, 90 | 60, 70 | Oui |
| E07 | SQL101 | 80, NULL | 50, 50 | Non : un seul score antérieur |
| E08 | SQL101 | 80, 80 | NULL, NULL | Non : aucun score récent noté |
| E09 | SQL101 | Aucune ligne | 60, 60 | Non : période antérieure manquante |
| E24 | STAT101 | 0, 0 | 0, 0 | Oui |
La requête d'inspection renvoie 18 lignes d'évaluation. E09 ne comporte que deux lignes ; ses évaluations antérieures sont absentes. E08 a deux lignes récentes, mais aucune ne comporte de score enregistré.
Vérifier les deux exemples éligibles
E01 : moyenne antérieure 85, moyenne récente 65, baisse de 20 points → Review. E24 : les deux moyennes à 0, baisse 0 → No alert. Les trois autres exemples nécessitent le libellé Insufficient data.